﻿namespace System.Data.Services.Http
{
    #region Namespaces.

    using System;
    using System.Globalization;
    using System.IO;
    using System.Text;
    using System.Threading;
    using System.Diagnostics;

    #endregion Namespaces.

    /// <summary>
    /// Provides an HTTP-specific implementation of the WebResponse class.
    /// </summary>
    internal abstract class HttpWebResponse : System.Data.Services.Http.WebResponse, IDisposable
    {
        /// <summary>Gets the headers of the data being received.</summary>
        public abstract WebHeaderCollection Headers
        {
            get;
        }
        /// <summary>Gets the request that originated this response.</summary>
        public abstract HttpWebRequest Request
        {
            get;
        }
        /// <summary>Gets the status code for the data being received.</summary>
        public abstract System.Net.HttpStatusCode StatusCode
        {
            get;
        }
        /// <summary>Gets a specific header by name.</summary>
        /// <param name="headerName">Name of header.</param>
        /// <returns>The value for the header.</returns>
        public abstract string GetResponseHeader(string headerName);
        /// <summary>
        /// Gets the underlying <see cref="T:System.Net.HttpWebResponse" /> if there is one, or null otherwise.
        /// </summary>
        /// <returns>The underlying response.</returns>
        public abstract Net.HttpWebResponse GetUnderlyingHttpResponse();
    }
}
